package graph;

import java.util.ArrayList;
import java.util.List;

/**
 * 图的节点
 */
public class Node<T> {
    /**
     * 原始值
     */
    T value;

    /**
     * 入度，表示有多少条边直接指向当前节点
     */
    int in;

    /**
     * 出度，表示当前节点有多少条直接指向其他节点的边
     */
    int out;

    /**
     * 当前节点能抵达的相邻的节点
     */
    List<Node<T>> nextNodes;

    /**
     * 当前节点的直接边，连接其他节点
     */
    List<Edge<T>> nextEdges;

    public Node() {
        this.nextNodes = new ArrayList<>();
        this.nextEdges = new ArrayList<>();
    }

    public Node(T value) {
        this();
        this.value = value;
    }
}
